﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DataStructures
{
	public interface IBaseEnumerable<Element, Tree, TreeList, Item> : IEnumerable<Item>
		where Tree : IBaseTree<Element, Tree, TreeList>
		where TreeList : IBaseTreeList<Element, Tree, TreeList>
	{
		void Traverse(ITreeVisitor<Tree> visitor);
		void Traverse(TraversalType type, ITreeVisitor<Tree> visitor);
		Item[] ToArray();
		Item[] ToArray(TraversalType type);
		IEnumerator<Item> GetEnumerator(TraversalType type);
	}
}
